package pos.test;

import pos.domain.*;
import pos.utils.*;
import java.util.*;
import pos.data.*;

public class GenerarCalles {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//verRutaAleatoria();
		//guardarCalles();
		//comprobarCallesEstaciones();
		//guardarEstaciones();	
		generarEstacionesCercanas();
	}
	
	public static void guardarCalles(){
		Iterable<String> it1 = new FlujoEntrada("calles_sevilla.txt");
		Iterable<Calle> it2 = new IterableExpresion<String, Calle>(it1, Calle.getExpresion());
		
		List<Calle> lista = new ArrayList<Calle>();
		JDBCCalleDAO calleDao = new JDBCCalleDAO();
		for(Calle c:it2){
			lista.add(c);
			calleDao.insert(c);
		}
		System.out.println("FIN");
	}
	
	public static void comprobarCallesEstaciones(){
		Iterable<String> it1 = new FlujoEntrada("estaciones.txt");
		Iterable<Estacion> it2 = new IterableExpresion<String, Estacion>(it1, Estacion.getExpresion());
		JDBCCalleDAO calleDao = new JDBCCalleDAO();
		List<Estacion> lista = new ArrayList<Estacion>();
		List<String> callesErroneas = new ArrayList<String>();
		
		for(Estacion e:it2){
			String nombre = e.getCalle().getNombre();
			if(nombre!=null){
				Calle c = calleDao.selectByNombre(nombre);
				if(c==null){
					callesErroneas.add(nombre);
				}else{
					e.setCalle(c);
					lista.add(e);
				}
			}
		}
		
		System.out.println("Estaciones guardadas\n");
		for(Estacion e:lista){
			System.out.println(e.toString());
		}
		System.out.println(lista.size());
		System.out.println("Estaciones erroneas\n");
		for(String s:callesErroneas){
			System.out.println(s);
		}
	}
	
	public static void guardarEstaciones(){
		Iterable<String> it1 = new FlujoEntrada("estaciones.txt");
		Iterable<Estacion> it2 = new IterableExpresion<String, Estacion>(it1, Estacion.getExpresion());
		JDBCCalleDAO calleDao = new JDBCCalleDAO();
		List<Estacion> lista = new ArrayList<Estacion>();
		List<String> callesErroneas = new ArrayList<String>();
		JDBCEstacionDAO estacionDao = new JDBCEstacionDAO();
		
		for(Estacion e:it2){
			String nombre = e.getCalle().getNombre();
			if(nombre!=null){
				Calle c = calleDao.selectByNombre(nombre);
				if(c==null){
					callesErroneas.add(nombre);
				}else{
					e.setCalle(c);
					lista.add(e);
					estacionDao.insert(e);
				}
			}
		}
		System.out.println("FIN");
	}
	
	public static void verRutaAleatoria(){
		RutaAleatoria ra = new RutaAleatoria();
		System.out.println(ra.getCalleIni());
		System.out.println(ra.getCalleFin());
		System.out.println(ra.getListaRuta());
		
		for(Calle c:ra.getListaRuta()){
			System.out.println("Estaciones de la calle "+c.getNombre());
			for(Estacion e:c.getEstaciones()){
				System.out.println(e.getNumero());
			}
		}
	}
	
	public static void generarEstacionesCercanas(){
		/*
		List<Calle> lista = calleDao.getAllCalles();
		for(Calle c:lista){
			calleDao.insertEstacionesEnCalle(c);
		}
		System.out.println("FIN");	*/
		JDBCCalleDAO calleDao = new JDBCCalleDAO();
		calleDao.insertEstacionesCercanasCalle();
		System.out.println("FIN");
		
	}
}
